package chapter3_对象共享.二失效数据;

/**
 * 在setter与getter加上synchronized可以保证在多线程的情况下，对同一对象的读写不是并发的；比如一个线程正在写的时候，别一个线程是不能够读的;
 *
 * 在long与double变量情况下，64位的数据是由两个32位数字组成，如果在多线程情况下，一个线程在写，另一个线程在读；对于nonvalatile的数据，读线程
 * 完全有可能读取到新值的高32位，旧值的低32位，由此出现数据错误的问题;因此最好用锁或者volatile保护起来;而这里演示的是用synchronized同步锁
 */
//@ThreadSafe
public class SynchronizedInteger {
    private int value;

    public synchronized int getValue() {
        return value;
    }

    public synchronized void setValue(int value) {
        this.value = value;
    }
}
